package dominioDAO;

import hbt.HibernateDAO;
import hbt.HibernateUtil;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dominioEntity.Rodamiento;
import dominioTO.RodamientoTO;

public class RodamientoDAO {
	private static RodamientoDAO instancia ;
	private static SessionFactory sf;
	private static Session session;
	
	public static RodamientoDAO getInstancia() {
		if(instancia == null){
			instancia = new RodamientoDAO();
		} 
		return instancia;
	}
	public RodamientoDAO()
	{
		sf = HibernateUtil.getSessionFactory();
	}
	
	protected Session getSession(){
		if(session == null || !session.isOpen()){
			session = sf.openSession();
		}
		return session;
	}
	
	

	
	public Rodamiento getRodamiento(String nSerie,String  sufijo,String  prefijo,String  origen)
	{
		Rodamiento rod = new Rodamiento();
		
		rod.setPrefijo(prefijo);
		rod.setnSerie(nSerie);
		rod.setSufijo(sufijo);
		rod.setDescripcion(origen);
		
		String query = "from Rodamiento rod where rod.descripcion=:descripcion and rod.nSerie=:nSerie and rod.prefijo=:prefijo and rod.sufijo=:sufijo";
		Rodamiento rodBuscado = (Rodamiento)HibernateDAO.getInstancia().propiedades(query, rod);
		
		return rodBuscado;
	}
	public Rodamiento getRodamiento(RodamientoTO rodTO)
	{
		Rodamiento rod = new Rodamiento();
		
		rod.setPrefijo(rodTO.getPrefijo());
		rod.setnSerie(rodTO.getnSerie());
		rod.setSufijo(rodTO.getSufijo());
		rod.setDescripcion(rodTO.getDescripcion());
		
		String query = "from Rodamiento rod where rod.descripcion=:descripcion and rod.nSerie=:nSerie and rod.prefijo=:prefijo and rod.sufijo=:sufijo";
		Rodamiento rodBuscado = (Rodamiento)HibernateDAO.getInstancia().propiedades(query, rod);
		
		
		return rodBuscado;
	}
	
	@SuppressWarnings("unchecked")
	public List<Rodamiento> getListRodamientos()
	{
		String query = "from Rodamiento";
		List<Rodamiento> list = (List<Rodamiento>) HibernateDAO.getInstancia().getLista(query);
		return list;
	}
	public Rodamiento getRodamiento(String nSerie)
	{
		Rodamiento rod = new Rodamiento();
		
		rod.setnSerie(nSerie);
		
		String query = "from Rodamiento rod where rod.nSerie=:nSerie";
		Rodamiento rodBuscado = (Rodamiento)HibernateDAO.getInstancia().propiedades(query, rod);
		
		return rodBuscado;
	}
}
